const express = require('express');
const Mock = require('mockjs');
const cors = require('cors');
const router = express.Router();

// 导入 body-parser中间件解析表单数据
const bodyParser = require("body-parser");

const app = express();
const port = 9000;

app.use(cors());
// 解析 url-encoded格式的表单数据
app.use(bodyParser.urlencoded({
	extended: false
}));

// 解析json格式的表单数据
app.use(bodyParser.json())

// 个位数补零
function formatNumber(num) {
	return num.toString()[1] ? num : '0' + num
}

// 生成右侧放映厅
function setScreeningRoom() {
	// 放映厅数量
	const roomNum = 7
	let roomArr = []
	for (let i = 0; i < roomNum; i++) {
		roomArr.push(formatNumber(i + 1))
	}
	return roomArr
}

// 设置选座数据
const setSeat = (row, col) => {
	// 放映厅
	const screeningRoom = setScreeningRoom()
	// 生成A-K
	let arr = [...Array(row).keys()].map(i => String.fromCharCode(i + 65))
	// 定义放映厅数据对象
	let seatObj = {}
	// 每一排的座位
	let seatNum = []
	// 遍历放映厅数据
	for (let i = 0; i < screeningRoom.length; i++) {
		// 创建放映厅
		seatObj[screeningRoom[i]] = {}
		// 遍历行座位数
		for (let j = 0; j < arr.length; j++) {
			// 定义每行座位数组
			seatNum = []
			// 遍历添加每行座位信息
			for (let n = 0; n < col; n++) {
				// 座位信息
				seatNum.push({
					// 第几个放映厅
					room: screeningRoom[i],
					// 用户id
					userId: '',
					// 第几个座位
					num: arr[j] + (n + 1),
					// 是否选中
					isSelect: false,
					// 是否购买
					isPay: false
				})
			}
			// 将每行的座位信息添加到每一行上
			seatObj[screeningRoom[i]][arr[j]] = seatNum
		}
	}
	// 将数据赋值
	return seatObj
}

let seat = setSeat(11, 4)

app.get('/seat', (req, res) => {
	// 定义一个Mock模板  
	const template = {
		code: 200,
		data: seat
	};

	// 使用Mock.mock生成数据  
	const data = Mock.mock(template);

	// 将数据作为JSON响应返回  
	res.json(data);
})

app.post('/paySeat', (req, res) => {
	for (let t = 0; t < req.body.payArr.length; t++) {
		for (let key in seat) {
			for (let k in seat[key]) {
				for (let i = 0; i < seat[key][k].length; i++) {
					if (req.body.payArr[t].room === seat[key][k][i].room && req.body.payArr[t].num === seat[
							key][k][i].num) {
						seat[key][k][i].userId = req.body.payArr[t].userId
						seat[key][k][i].isSelect = req.body.payArr[t].isSelect
						seat[key][k][i].isPay = true
					}
				}
			}
		}
	}
	// 定义一个Mock模板  
	const template = {
		code: 200,
		data: seat
	};

	// 使用Mock.mock生成数据  
	const data = Mock.mock(template);

	// 将数据作为JSON响应返回  
	res.json(data);
});
app.listen(port, () => {
	console.log(`Mock server listening at http://localhost:${port}`);
});